/*
 * @Author: lucky
 * @Date: 2021-06-29 15:00:25
 * @LastEditors: wfz
 * @LastEditTime: 2021-07-03 11:26:01
 * @Description:  处理axios，并封装一些方法
 */
import axios from 'axios';
import qs from 'qs';
import { Notify } from 'vant';
import router from '../router';
import { baseURL } from './config';
import { removeToken, getToken } from './auth'

const service = axios.create({
  timeout: 10000,
  baseURL
});

// 请求拦截器
// service.interceptors.request.use()
service.interceptors.request.use(config => {
  // 拦住请求，给每个请求头部设置身份证
  if (getToken()) {
    config.headers['Authorization'] = getToken();
  }
  return config;
}, error => {
  return Promise.reject(error);
});

// 响应拦截器
service.interceptors.response.use(response => {
  // 处理数据的拆分，res就是后台给的数据
  const { data: res } = response;
  // 状态判断
  if (res.status !== 200) {
    if (res.status === 500) {
      // 后台服务器异常
      Notify({ type: 'warning', message: res.message });
    }
    if (res.status === 401) {
      // token异常
      removeToken();
      // 手动操作路由跳转到登录页
      router.push('/login');
    }
    //弹框提示
    // alert('错误！');
    return Promise.reject(new Error(res.message || 'Error'));
  } else {
    return res;
  }
}, error => {
  Notify({ type: 'danger', message: error.message });
  return Promise.reject(error);
});

//get 请求
export function get(url, data) {
  return service.get(url, { params: data });
}
//post请求，发送表单数据
export function post(url, data) {
  return service.post(url, qs.stringify(data));
}

//发送json数据，，登录
export function postJSON(url, data) {
  return service.post(url, data);
}


export default {
  service,
}
